package com.jintu.portal.service;

import com.jintu.portal.pojo.bean.SystemType;
import com.jintu.portal.pojo.dto.ModifyPwdDto;
import com.jintu.portal.pojo.dto.RegisterDto;
import com.jintu.portal.pojo.dto.TobUserDto;
import com.jintu.portal.pojo.dto.TobUserReqDto;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * Created by junhu on 2017/9/28.
 */
public interface TobUserService {
    /**
     * B端用户注册
     * @param registerDto
     * @throws Exception
     */
    void register(RegisterDto registerDto) throws Exception;
    /**
     * B端用户输入密码登录
     * @param username
     * @param pwd
     * @return
     * @throws Exception
     */
    List<TobUserDto> login(String username, String pwd, SystemType systemType) throws Exception;

    /**
     * B端用户通过动态验证码登录
     * @param username
     * @param vaildCode
     * @return
     * @throws Exception
     */
    List<TobUserDto> dynamicLogin(String username, String vaildCode, SystemType systemType) throws Exception;
//
    /**
     * B端根据不同操作类型，发送验证码
     * 1用户注册验证码，2动态登录验证码，3忘记密码注册码
     * @param systemType
     */
    void sendCodeByType(String phone, Integer type, SystemType systemType) throws Exception;

    /**
     * B端用户忘记密码-修改密码
     * @param systemType
     */
    void forgetPwdModify(ModifyPwdDto modifyPwdDto, SystemType systemType)throws Exception;

//    /**
//     * B端用户角色切换
//     * @param systemType
//     */
//    List<TobUserDto> userRoleChange(Long userId, SystemType systemType)throws Exception;
//
//    /**
//     * 部门下的所有员工（有效的）
//     * @param departmentId
//     * @param systemType
//     * @return
//     * @throws Exception
//     */
//    List<TobUserDto> departmentUserList(Long departmentId, SystemType systemType)throws Exception;
//
//    /**
//     * 部门下的所有员工（包括删除即离职的）
//     * @param departmentId
//     * @param systemType
//     * @return
//     * @throws Exception
//     */
//    public List<TobUserDto> departmentAllUserList(Long departmentId, SystemType systemType) throws Exception;
//
    /**
     * B端 员工详情
     * @param departmentId
     * @param userId
     * @param postId
     * @return
     * @throws Exception
     */
    TobUserDto tobUserDetail(Long departmentId, Long userId, Long postId, SystemType systemType)throws Exception;
//
//    /**
//     * 用户操作类1停用，2启用，3通过，4拒绝，5离职
//     * @param userReqDto
//     * @throws Exception
//     */
//    void tobUserOper(TobUserReqDto userReqDto) throws Exception;
//
    /**
     * 编辑员工信息
     * @param tobUserReqDto
     * @throws Exception
     */
    TobUserDto updateEmployee(TobUserReqDto tobUserReqDto,String token) throws Exception;

    /**
     * 上传头像
     * @param userId
     * @param uploadFile
     * @throws Exception
     */
    String uploadFile(Long userId, MultipartFile uploadFile) throws Exception;
//
//    /**
//     * 部门下的岗位集合
//     * @param departmentTypeId
//     * @param bAppSystem
//     * @return
//     */
//    List<PostDto> departmentPostList(Long departmentTypeId, SystemType bAppSystem) throws Exception;
//
//    void syncClientId(Long userId, String clientId);
//
    /**
     * 校验用户角色是否都已经停用
     * @param userId
     * @throws Exception
     */
    void validUserStop(Long userId) throws Exception;
//
//    /**
//     * 扫码注册校验
//     * @param registerDto
//     * @throws Exception
//     */
//    void registerCheck(RegisterDto registerDto) throws Exception;
//
//    /**
//     * B端APP 获取店长(管理者)的相关部门及岗位
//     * @param managerPhoneNo 管理者的手机号码
//     * @param departmentId 部门ID
//     * @param postId 岗位ID
//     * @return
//     * @throws Exception
//     */
//    List<DepartmentPostDto> getUserDepartmentAndPostList(String managerPhoneNo, Long departmentId, Long postId)throws Exception;
//
//    /**
//     * B端APP注册(直接页面)
//     * @param pageRegisterDto
//     * @throws Exception
//     */
//    void pageRegister(PageRegisterDto pageRegisterDto) throws Exception;
//
//    /**
//     * 获取该门店下待审核的员工
//     * @param departmentId
//     * @param systemType
//     * @return
//     */
//    List<TobUserDto> pendingUserList(Long departmentId, SystemType systemType) throws Exception;
}
